package tests;

import common.Utils;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.IOException;
import java.time.Duration;

public class LoginPage extends Utils {

    public static String url = "http://127.0.0.1:8080/blog_login.html";

    /**
     * 构造函数，调用父类Utils的构造函数
     * 访问登录页面
     */
    public LoginPage() {
        super(url);
    }

    /**
     *检查页面是否能正确加载
     * @throws InterruptedException
     */
    public void loginPageRight() throws InterruptedException {
        //查看页面元素是否存在来检查页面是否能成功加载
            //这里选择主页按钮元素
        driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)"));
        //登录输入框
        driver.findElement(By.cssSelector("body > div.container-login > div"));
        Thread.sleep(3000);

    }

    /**
     * 检查登录功能 - 成功登录
     */
    public void LoginSuc() throws IOException {
        //找到登录页面中的用户输入框,输入账号和密码并点击登录按钮
        driver.findElement(By.cssSelector("#username")).sendKeys("Aileen");
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();

        //检查登录之后是否登陆成功
            //检查页面是否跳转到博客列表页
                //根据博客列表页的元素来判断
        driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a"));
                 //检查页面标题是否正确--这里需要配置断言
        String exceptTitle = driver.getTitle();
        assert exceptTitle.equals("博客列表页") : "登录失败，页面标题不正确！";
        getScreenShot(getClass().getName() + "-LoginSuc");
        driver.navigate().back(); //返回登录页面，便于后续测试
    }


    /**
     * 检查登录功能 - 登录失败
     */
    //检查登录失败,在测完登录成功之后需要先回到登录页面才能进行登录失败的检查↑
    public void LoginFail() throws InterruptedException, IOException {
        //先清空之前成功登录在输入框中输入的内容:
            //清空方式有两种:
                //1.使用clear()方法
        driver.findElement(By.cssSelector("#username")).clear();
        driver.findElement(By.cssSelector("#password")).clear();
                //2.使用refresh()方法刷新页面
        //driver.navigate().refresh();

        //输入错误的账号和密码
        driver.findElement(By.cssSelector("#username")).sendKeys("Aileen111");//账号错误
        driver.findElement(By.cssSelector("#password")).sendKeys("123456");
        driver.findElement(By.cssSelector("#submit")).click();

        //等待alert弹窗出现
        Thread.sleep(2000); // 等待2秒钟，确保alert弹窗出现

        //获取失败的弹窗内容,将它和预期的错误信息进行比较
        String alertText = driver.switchTo().alert().getText();
        String expectedAlertText = "用户不存在";

        assert alertText.equals(expectedAlertText);
        //接受弹窗
        driver.switchTo().alert().accept();
        //截图
        getScreenShot(getClass().getName() + "-LoginFail");
    }


}
